我們在前一天介紹了 Go 的 if else 跟 switch case
今天要介紹的是每個程式語言基本必備的迴圈,我們就直接來看吧
首先是計數器,最常見的應用之一,語法跟其他程式語言的基本上相同
for 變數; 執行條件; 遞增值 {
// 要做的事
}
實際範例如下,用 for 迴圈 print 出 0~9
package main
import "fmt"
func main() {
for i:= 0; i < 10; i++ {
fmt.Println(i)
}
}
/* 實際輸出結果
0
1
2
3
4
5
6
7
8
9
*/
在迴圈中有時會使用 break
跟 continue
來進行相關操作
實際用起來的話,就會像下面這樣
當加總 (sum
) 超過 20 時,輸出現在的 i 值,並跳脫結束迴圈 (break)
package main
import "fmt"
func main() {
sum := 0
for i:= 0; i < 10; i++ {
sum += i
if sum > 20 {
fmt.Println(i)
break
}
}
}
/* 實際輸出結果
6
*/
當 i 能被 2 整除的話,就直接跳脫當前迴圈,到下一個迴圈迭代 (continue),否則就輸出目前的 i 值
package main
import "fmt"
func main() {
for i:= 0; i < 10; i++ {
if i % 2 == 0 {
continue
}
fmt.Println(i)
}
}
/* 實際輸出結果
1
3
5
7
9
*/
而「變數宣告」跟「遞增值」這兩個是可選的,也就是不一定要寫
用上面範例來改寫的話,就會變成下面這樣,輸出結果不變
看起來是不是很像其他語言的 while 呢~沒錯這就是 Go 的 while 寫法
package main
import "fmt"
func main() {
i := 0
for i < 10 {
fmt.Println(i)
i++
}
}
/* 實際輸出結果
0
1
2
3
4
5
6
7
8
9
*/
Go 要寫無限迴圈的話,也很簡單,只要把條件拿掉就好了,像是下面這樣
for {
// 無限迴圈內要做的事
}
如果要對 Collection 進行迭代/遍歷,可以透過 range
這個保留字
實際用法如下
package main
import "fmt"
func main() {
ary := []int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
for index, value := range ary {
fmt.Printf("index %d,value %d\n", index, value)
}
}
/* 實際輸出結果
index 0,value 0
index 1,value 1
index 2,value 2
index 3,value 3
index 4,value 4
index 5,value 5
index 6,value 6
index 7,value 7
index 8,value 8
index 9,value 9
*/
如果不需要迭代/遍歷時的 index,也可以用 _
取代,像是下面這樣
package main
import "fmt"
func main() {
ary := []int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
for _, value := range ary {
fmt.Printf("value %d\n", value)
}
}
今天簡單介紹了 Go 的 for 迴圈用法
下一篇會來介紹 Array、Slices 的用法
明天見~